/**
 * 集合的封装和使用
 */
class set {
    constructor() {
        this.items = {}
    }

    // add(value)，向集合添加一个新的项

    add(item) {
        if (this.has(item)) return
        this.items[item] = item
    }

    // delete(value)，从集合移除一个值

    delete(item) {
        if (this.has(item)) {
            delete this.items[item]
            return true
        }

    }

    // has(value)，如果值在集合中，返回true，否则返回false

    has(item) {
        return this.items[item] !== undefined
    }

    // clear()，移除集合中的所有项

    clear() {
        this.items = {}
    }

    // size()，返回集合所包含元素的数量

    size() {
        return this.values().length
    }

    // values()，返回一个包含集合中所有值的数组

    values() {
        let arr = []
        for (let item in this.items) {
            arr.push(this.items[item])
        }
        return arr
    }
}


const S = new set()

S.add('one')
S.add('one')
S.add('two')
S.add('three')
S.add('four')
S.add('five')
S.add('six')
S.delete('two')
console.log(S);
console.log(S.has('one'));
console.log(S.size());
S.clear()
console.log(S);
